#include <stdio.h>
#include <stdlib.h>
#include"node.h"

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	Node*head=NULL;//头指针为空值,使得它永远是链表的头部
	int num;
	do{
		scanf("%d",&num);
		if(num!=-1){
			Node*p=(Node*)malloc(sizeof(Node));//每一次都进行条件判断,若输入的数字不是-1,则申请一个Node大小的内存作为一个结点,它用以存放该数字,并可以指向下一个结点
			p->value=num;
			p->next=NULL;
			Node *last=head;//引入一个第三方指针,它最初指向链表的头部，last指针是一个指向结点的指针,所以它是结构体类型的指针
			if(last){
				while(last->next){//遍历列表,当某个结点的指针指向NULL时,循环停止,该结点为链表的最后一个结点。即遍历到链表的末结点
					last=last->next;//last指针由指向某结点的指针变为该结点的next指针,而next指针指向下一个结点,因此last指针也向下一个结点移动
				}
				last->next=p;//使最后一个结点的next指针指向下一个结点,将两个孤立的结点连接,形成链表
			}else{
				head=p;
			}
			
		}
		
	}while(num!=-1);
	// 输出链表内容
    Node* current = head;
    while (current) {
        printf("%d ", current->value);
        current = current->next;
    }
    printf("\n");

    // 释放链表内存
    while (head) {
        Node* temp = head;
        head = head->next;
        free(temp);
    }
	return 0;
	
}
